home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / comm / tcp / Amster-main.lha / Amster_Install / Rexx / AmsterSearch_Triton.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  2000-10-22  |  18.1 KB  |  555 lines

  1. /*
  2. ** Amster Search Script
  3. ** $VER: AmsterSearch_Triton.rexx 0.13 (22.10.2000)
  4. **
  5. ** By Roger Clark (kaedric@texas.net)
  6. ** October 22, 2000
  7. **
  8. ** This script requires the rexxreqtools.library which can be found on Aminet.
  9. **                      util/rexx/RexxReqTools.lha
  10. **
  11. ** This script requires the tritonrexx.library which can be found on Aminet.
  12. **                      util/rexx/TritonRexx376.lha
  13. **
  14. ** This script requires the triton.library which can be found on Aminet.
  15. **                      dev/gui/tri20b1usr.lha
  16. **
  17. */
  18.  
  19. Options Results
  20.  
  21. Signal On Break_C
  22. Signal On failure
  23. Signal On halt
  24. Signal On ioerr
  25. Signal On syntax
  26.  
  27. Parse Arg Datafile
  28. MP3Title. = ""
  29. MP3Title.0 = 0
  30. Dir = ""
  31. SaveDir = ""
  32. SaveFile = ""
  33. HelpBool = 0
  34. SaveResultsBool = 0
  35. AutoHopBool = 0
  36. app = '00000000'x
  37. window = '00000000'x
  38.  
  39. Link.0  = "Unknown"
  40. Link.1  = "14.4K Modem"
  41. Link.2  = "28.8K Modem"
  42. Link.3  = "33.6K Modem"
  43. Link.4  = "56K Modem"
  44. Link.5  = "ISDN 64K"
  45. Link.6  = "ISDN 128K"
  46. Link.7  = "Cable"
  47. Link.8  = "DSL"
  48. Link.9  = "T1"
  49. Link.10 = "T3+"
  50.  
  51. DefaultFile = "MP3Search.dat"     /* Change as needed */
  52. DefaultSave = "MP3Search.results" /* Change as needed */
  53.  
  54. If ~Show('L','rexxsupport.library') Then Do
  55.    If ~addlib('rexxsupport.library',10,-30,0) Then Do
  56.       Say 'Could not access the rexxsupport.library!'
  57.       Exit 10
  58.    End
  59. End
  60.  
  61. If ~Show('L','tritonrexx.library') Then Do
  62.    If ~addlib('tritonrexx.library',10,-30,0) Then Do
  63.       Say 'Could not access the tritonrexx.library!'
  64.       Exit 10
  65.    End
  66. End
  67.  
  68. If ~Show('L','rexxreqtools.library') Then Do
  69.    If ~addlib('rexxreqtools.library',10,-30,0) Then Do
  70.       Say 'Could not access the rexxreqtools.library!'
  71.       Exit 10
  72.    End
  73. End
  74.  
  75. Call ReadFile
  76. Call ReadServers
  77.  
  78. windowtags =   WindowID(1),
  79.                WindowTitle('Amster MP3 Search'),
  80.                QuickHelpOn(HelpBool),
  81.                  BeginMenu('Project'),
  82.                    MenuItem('L_Load File',1),
  83.                    MenuItem('S_Save File',2),
  84.                    'ItemBarLabel',
  85.                    MenuItem('A_Sort A->Z',3),
  86.                    MenuItem('Z_Sort Z->A',4),
  87.                    'ItemBarLabel',
  88.                    MenuItem('H_Quick Help',6) 'TRMN_Flags TRMF_CHECKIT',
  89.                    MenuItem('R_Save Search Results',7) 'TRMN_Flags TRMF_CHECKIT',
  90.                    MenuItem('C_Auto-Change Servers',16) 'TRMN_Flags TRMF_CHECKIT',
  91.                    'ItemBarLabel',
  92.                    MenuItem('?_About',8),
  93.                    MenuItem('Q_Quit',9),
  94.                  'HorizGroupA',
  95.                    'Space',
  96.                    'VertGroupA',
  97.                      'Space',
  98.                      NamedSeparatorIN(MP3Title.0||' Song Titles',20),
  99.                      'Space',
  100.                      ListSS('MP3Title',5,0,0),
  101.                      'Space',
  102.                      NamedFrameBox('Options'),
  103.                      'VertGroupEA',
  104.                        'Space',
  105.                        'HorizGroupEA',
  106.                          'Space',
  107.                          Button('Add Song',10) 'TRDO_QuickHelpString "Add a song to the search list."',
  108.                          Button('Edit Song',11) 'TRDO_QuickHelpString "Edit selected song title."',
  109.                          Button('Remove Song',12) 'TRDO_QuickHelpString "Remove selected song from the search list."',
  110.                          'Space',
  111.                        'EndGroup',
  112.                        'Space',
  113.                        'HorizGroupEA',
  114.                          'Space',
  115.                          Button('Search',13) 'TRDO_QuickHelpString "Search for the selected song."',
  116.                          Button('Search All',14) 'TRDO_QuickHelpString "Search for all songs in the search list."',
  117.                          Button('Stop Search',15) 'TRDO_QuickHelpString "Stop Current Search."',
  118.                          'Space',
  119.                        'EndGroup',
  120.                        'Space',
  121.                      'EndGroup',
  122.                    'EndGroup',
  123.                    'Space',
  124.                  'EndGroup',
  125.                'EndProject'
  126.  
  127. app = TR_CREATEAPP('TRCA_Name Listview')
  128. If app ~= '00000000'x Then Do
  129.   window = TR_OPENPROJECT(app,windowtags)
  130.   If window ~= '00000000'x Then Do
  131.     Done = 0
  132.     Call TR_SETATTRIBUTE(window,15,'TRAT_Disabled',1)
  133.     If MP3Title.0 = 0 Then Do
  134.       Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',1)
  135.       Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',1)
  136.       Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',1)
  137.       Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',1)
  138.     End
  139.     Do While Done ~= 1
  140.       Call TR_WAIT(app,'')
  141.       Do While TR_HANDLEMSG(app,'event')
  142.         If event.trm_class = 'TRMS_NEWVALUE' Then Do
  143.           Select
  144.             When event.trm_id = 5 Then Do
  145.               If BitAnd(D2X(event.trm_qualifier),'0200'x) = '0200'x Then Do
  146.                 Call SearchSingle
  147.               End
  148.             End
  149.             When event.trm_id = 6 Then Do
  150.               HelpBool = 1 - HelpBool
  151.               Call TR_SETATTRIBUTE(window,0,'TRWI_QuickHelp',HelpBool)
  152.             End
  153.             When event.trm_id = 7 Then Do
  154.               SaveResultsBool = 1 - SaveResultsBool
  155.               If SaveResultsBool = 1 then Call GetSaveFileName
  156.             End
  157.             When event.trm_id = 16 Then Do
  158.               AutoHopBool = 1 - AutoHopBool
  159.             End
  160.             Otherwise NOP
  161.           End
  162.         End
  163.         If event.trm_class = 'TRMS_ACTION' Then Do
  164.           Select
  165.             When event.trm_id = 1 Then Do
  166.               DataFile = ""
  167.               Call ReadFile
  168.               Call TR_SETATTRIBUTE(window,20,'TRAT_Text',MP3Title.0||' Song Titles')
  169.               Call TR_SETATTRIBUTE(window,5,'TROB_Listview',MP3Title)
  170.               If MP3Title.0 = 0 Then Do
  171.                 Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',1)
  172.                 Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',1)
  173.                 Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',1)
  174.                 Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',1)
  175.               End
  176.               Else Do
  177.                 Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',0)
  178.                 Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',0)
  179.                 Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',0)
  180.                 Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',0)
  181.               End
  182.             End
  183.             When event.trm_id = 2 Then Do
  184.               Call WriteFile
  185.             End
  186.             When event.trm_id = 3 Then Do
  187.               M = 1
  188.               Do While (9 * M + 4) < MP3Title.0
  189.                  M = M * 3 + 1
  190.               End
  191.               Do While M > 0
  192.                  K = MP3Title.0 - M
  193.                  Do J = 1 To K
  194.                     Q = J
  195.                     Do While Q > 0
  196.                        L = Q + M
  197.                        If MP3Title.Q <= MP3Title.L Then Leave
  198.                        Tmp        = MP3Title.Q
  199.                        MP3Title.Q = MP3Title.L
  200.                        MP3Title.L = tmp
  201.                        Q = Q - M
  202.                     End
  203.                  End
  204.                  M = M % 3
  205.               End
  206.               Call TR_SETATTRIBUTE(window,5,'TROB_Listview',MP3Title)
  207.             End
  208.             When event.trm_id = 4 Then Do
  209.               M = 1
  210.               Do While (9 * M + 4) < MP3Title.0
  211.                  M = M * 3 + 1
  212.               End
  213.               Do While M > 0
  214.                  K = MP3Title.0 - M
  215.                  Do J = 1 To K
  216.                     Q = J
  217.                     Do While Q > 0
  218.                        L = Q + M
  219.                        If MP3Title.Q >= MP3Title.L Then Leave
  220.                        Tmp        = MP3Title.Q
  221.                        MP3Title.Q = MP3Title.L
  222.                        MP3Title.L = tmp
  223.                        Q = Q - M
  224.                     End
  225.                  End
  226.                  M = M % 3
  227.               End
  228.               Call TR_SETATTRIBUTE(window,5,'TROB_Listview',MP3Title)
  229.             End
  230.             When event.trm_id = 6 Then Do
  231.               Call TR_SETATTRIBUTE(window,6,TRMN_Flags,TRMF_CHECKED)
  232.             End
  233.             When event.trm_id = 7 Then Do
  234.               Call TR_SETATTRIBUTE(window,7,TRMN_Flags,TRMF_CHECKED)
  235.             End
  236.             When event.trm_id = 8 Then Do
  237.               Call rtezrequest("AmsterSearch_Triton.rexx v0.13"||D2C(10)||"By: Roger Clark (kaedric@texas.net)"||D2C(10)||"Date: October 22, 2000","Thanks","About AmsterSearch_Triton.rexx")
  238.             End
  239.             When event.trm_id = 9 Then Do
  240.               Done = 1
  241.             End
  242.             When event.trm_id = 10 Then Do
  243.               NewSong = rtgetstring("","Enter New Search String","Add Song")
  244.               If NewSong ~= "" Then Do
  245.                 NewSong = Compress(NewSong,D2C(34)||D2C(39))
  246.                 MP3Title.0 = MP3Title.0 + 1
  247.                 MP3Count = MP3Title.0
  248.                 MP3Title.MP3Count = NewSong
  249.                 Call TR_SETATTRIBUTE(window,20,'TRAT_Text',MP3Title.0||' Song Titles')
  250.                 Call TR_SETATTRIBUTE(window,5,'TROB_Listview',MP3Title)
  251.               End
  252.               If MP3Title.0 > 0 Then Do
  253.                 Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',0)
  254.                 Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',0)
  255.                 Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',0)
  256.                 Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',0)
  257.               End
  258.             End
  259.             When event.trm_id = 11 Then Do
  260.               SongNumber = TR_GETATTRIBUTE(window,5,'TRAT_Value')+1
  261.               NewSong = rtgetstring(MP3Title.Songnumber,"Edit Song Title","Edit Song")
  262.               If NewSong ~= "" Then Do
  263.                 NewSong = Compress(NewSong,D2C(34)||D2C(39))
  264.                 MP3Title.SongNumber = NewSong
  265.                 Call TR_SETATTRIBUTE(window,5,'TROB_Listview',MP3Title)
  266.               End
  267.             End
  268.             When event.trm_id = 12 Then Do
  269.               If MP3Title.0 > 0 Then Do
  270.                 SongNumber = TR_GETATTRIBUTE(window,5,'TRAT_Value')+1
  271.                 Do Loop = SongNumber to MP3Title.0 - 1
  272.                 X = Loop + 1
  273.                   MP3Title.Loop = MP3Title.X
  274.                 End
  275.                 MP3Title.0 = MP3Title.0 - 1
  276.                 Call TR_SETATTRIBUTE(window,20,'TRAT_Text',MP3Title.0||' Song Titles')
  277.                 Call TR_SETATTRIBUTE(window,5,'TROB_Listview',MP3Title)
  278.               End
  279.               If MP3Title.0 = 0 Then Do
  280.                 Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',1)
  281.                 Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',1)
  282.                 Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',1)
  283.                 Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',1)
  284.               End
  285.             End
  286.             When event.trm_id = 13 Then Do
  287.               Call SearchSingle
  288.             End
  289.             When event.trm_id = 14 Then Do
  290.               Call SearchAll
  291.             End
  292.             When event.trm_id = 16 Then Do
  293.               Call TR_SETATTRIBUTE(window,16,TRMN_Flags,TRMF_CHECKED)
  294.             End
  295.             Otherwise NOP
  296.           End
  297.         End
  298.         If event.trm_class = 'TRMS_CLOSEWINDOW' Then Do
  299.           Done = 1
  300.         End
  301.       End
  302.     End
  303.     Call TR_CLOSEPROJECT(window)
  304.   End
  305.   Call TR_DELETEAPP(app)
  306. End
  307. Exit
  308.  
  309. ReadFile:
  310.   If Datafile = "" then Do
  311.     If Dir = "" then Dir = Pragma("D")
  312.     Datafile = rtfilerequest(Dir,DefaultFile,"Load File...",,,)
  313.     If Datafile = "" then Return
  314.   End
  315.   If Exists(Datafile) then Do
  316.     Call Open(In,Datafile,"R")
  317.     x = 1
  318.     Do Until EOF(In)
  319.       MP3Title.x = ReadLn(In)
  320.       MP3Title.x = Compress(MP3Title.x,D2C(34)||D2C(39))
  321.       x = x + 1
  322.     End
  323.     Call Close(In)
  324.     MP3Title.0 = x - 2
  325.     If MP3Title.0 < 0 Then MP3Title.0 = 0
  326.     If LastPos('/',Datafile) > LastPos(':',Datafile) then Do
  327.       DefaultFile = SubStr(Datafile,LastPos('/',Datafile)+1)
  328.       Dir = Left(Datafile,LastPos('/',Datafile))
  329.     End
  330.     Else Do
  331.       DefaultFile = SubStr(Datafile,LastPos(':',Datafile)+1)
  332.       Dir = Left(Datafile,LastPos(':',Datafile))
  333.     End
  334.   End
  335.   Return
  336.  
  337. WriteFile:
  338.   If Dir = "" then Dir = Pragma("D")
  339.   Datafile = rtfilerequest(Dir,DefaultFile,"Save As...",,,)
  340.   If DataFile ~= "" Then Do
  341.     Call Open(Out,DataFile,"W")
  342.     Do Loop = 1 to MP3Title.0
  343.       Call WriteLn(Out,MP3Title.Loop)
  344.     End
  345.     Call Close(Out)
  346.     If LastPos('/',Datafile) > LastPos(':',Datafile) then Do
  347.       DefaultFile = SubStr(Datafile,LastPos('/',Datafile)+1)
  348.       Dir = Left(Datafile,LastPos('/',Datafile))
  349.     End
  350.     Else Do
  351.       DefaultFile = SubStr(Datafile,LastPos(':',Datafile)+1)
  352.       Dir = Left(Datafile,LastPos(':',Datafile))
  353.     End
  354.   End
  355.   Return
  356.  
  357. GetSaveFileName:
  358.   If SaveDir = "" then SaveDir = Pragma("D")
  359.   SaveFile = rtfilerequest(Dir,DefaultSave,"Save Results as...",,,)
  360.   If SaveFile = "" Then Do
  361.     SaveResultsBool = 0
  362.     Call TR_SETATTRIBUTE(window,7,TRMN_Flags,TRMF_CHECKED)
  363.   End
  364.   Return
  365.  
  366. SaveResults:
  367.   If SONG.COUNT > 0 Then Do
  368.     If ~Open(Out,SaveFile,"A") then Call Open(Out,SaveFile,"W")
  369.     Address 'AMSTER.1' 'GETSERVERSTATS INFO'
  370.     Call WriteLn(Out,'Server: 'INFO.SERVER':'INFO.PORT)
  371.     Call WriteLn(Out,Date() Time()' - Found 'SONG.COUNT' matches for 'SongTitle)
  372.     Do SRLoop = 0 to SONG.COUNT-1
  373.       SongName = SubStr(SONG.SRLoop.TITLE,LastPos('\',SONG.SRLoop.TITLE)+1)
  374.       Speed = SONG.SRLoop.LINK
  375.       Hours = SONG.SRLoop.TIME % 3600
  376.       Minutes = (SONG.SRLoop.TIME % 60) - (Hours * 60)
  377.       Seconds = SONG.SRLoop.TIME - (Hours * 3600) - (Minutes * 60)
  378.       If Hours > 0 then Playtime = Hours":"Right("00"||Minutes,2)":"Right("00"||Seconds,2)
  379.       Else Playtime = Right("00"||Minutes,2)":"Right("00"||Seconds,2)
  380.       Call WriteLn(Out,'Match 'SRLoop+1)
  381.       Call WriteLn(Out,'Title  : 'SongName)
  382.       Call WriteLn(Out,'User   : 'SONG.SRLoop.USER' ('Link.Speed')')
  383.       Call WriteLn(Out,'Size   : 'Right(AddComma(SONG.SRLoop.SIZE),11)' bytes  Play Time: 'Playtime)
  384.       Call WriteLn(Out,'Bitrate: 'Right(SONG.SRLoop.BITRATE,11)' kbps   Frequency: 'SONG.SRLoop.FREQUENCY' kHz')
  385.       Call WriteLn(Out,' ')
  386.     End
  387.     Call WriteLn(Out,' ')
  388.     Call Close(Out)
  389.   End
  390.   Return
  391.  
  392. AddComma: Procedure
  393.   Arg String
  394.   NewString = ""
  395.   If Length(String) < 4 Then Return String
  396.   String = Translate(String,"",".")
  397.   String = Reverse(String)
  398.   Do Loop = 1 to Length(String) By 3
  399.     NewString = NewString||SubStr(String,Loop,3)||","
  400.   End
  401.   NewString = Reverse(NewString)
  402.   NewString = Strip(NewString,"L",",")
  403.   NewString = Strip(NewString)
  404.   Return NewString
  405.  
  406. CheckOnline:
  407.   If Show('P','AMSTER.1') = 0 then Do
  408.     Call rtezrequest('Could not locate Amster''s Arexx port.  Exiting script.','OK','Host Environment Not Found')
  409.     Signal Done
  410.   End
  411.   Address 'AMSTER.1' 'ISONLINE'
  412.   If RC = 0 then Do
  413.     Z = 0
  414.     Do While RC = 0
  415.       Z = Z + 1
  416.       Call Delay(50)
  417.       Address 'AMSTER.1' 'ISONLINE'
  418.       If RC = 0 & Z = 20 Then Leave
  419.     End
  420.   End
  421.   Return
  422.  
  423. ReadServers:
  424.   Dir = Pragma("D")
  425.   Servers = "Amster.servers"
  426.   If ~Exists(Servers) Then Do
  427.     Servers = rtfilerequest(Dir,Servers,"Select Server List",,,)
  428.     If Servers = "" Then Do
  429.       X = 0
  430.       Y = 0
  431.       Return
  432.     End
  433.   End
  434.  
  435.   Call Open(In,Servers,"R")
  436.     X = 1
  437.     Y = 1
  438.     Do Until EOF(In)
  439.       ServerData = ReadLn(In)
  440.       IPAddress.X  = Word(ServerData,1)
  441.       PortNumber.X = Word(ServerData,2)
  442.       X = X + 1
  443.     End
  444.     X = X - 1
  445.   Call Close(In)
  446.   Return
  447.  
  448. ChangeServers:
  449.   If Y = 0 Then Do
  450.     Address 'AMSTER.1' 'CONNECT'
  451.   End
  452.   Else Do
  453.     Address 'AMSTER.1' 'CONNECT SERVER 'IPAddress.Y' PORT 'PortNumber.Y
  454.     Y = Y + 1
  455.     If Y > X then Do
  456.       Y = 1
  457.       StopSearch = 1
  458.     End
  459.   End
  460.   Call CheckOnline
  461.   If Z = 20 then Signal ChangeServers
  462.   Return
  463.  
  464. SearchSingle:
  465.   SongNumber = TR_GETATTRIBUTE(window,5,'TRAT_Value')+1
  466.   Call CheckOnline
  467.   If AutoHopBool = 1 Then Do
  468.     Call TR_SETATTRIBUTE(window,10,'TRAT_Disabled',1)
  469.     Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',1)
  470.     Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',1)
  471.     Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',1)
  472.     Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',1)
  473.     Call TR_SETATTRIBUTE(window,15,'TRAT_Disabled',0)
  474.   End
  475.   StopSearch = 0
  476.   Search:
  477.   Address 'AMSTER.1' 'SEARCH "'MP3Title.SongNumber'" SONG'
  478.   If SaveResultsBool = 1 Then Do
  479.     SongTitle = MP3Title.SongNumber
  480.     Call SaveResults
  481.   End
  482.   If AutoHopBool = 1 Then Do
  483.     Call TR_HANDLEMSG(app,'event')
  484.     If event.trm_class = 'TRMS_ACTION' & event.trm_id = 15 Then Do
  485.       StopSearch = 1
  486.       Call TR_SETATTRIBUTE(window,10,'TRAT_Disabled',0)
  487.       Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',0)
  488.       Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',0)
  489.       Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',0)
  490.       Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',0)
  491.       Call TR_SETATTRIBUTE(window,15,'TRAT_Disabled',1)
  492.     End
  493.     If event.trm_class = 'TRMS_CLOSEWINDOW' Then Do
  494.       Done = 1
  495.       StopSearch = 1
  496.     End
  497.     If StopSearch = 0 Then Do
  498.       If SONG.COUNT > 0 Then Call Delay(500)
  499.       Call ChangeServers
  500.       Signal Search
  501.     End
  502.   End
  503.   Return
  504.  
  505. SearchAll:
  506.   Call CheckOnline
  507.   Call TR_SETATTRIBUTE(window,10,'TRAT_Disabled',1)
  508.   Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',1)
  509.   Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',1)
  510.   Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',1)
  511.   Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',1)
  512.   Call TR_SETATTRIBUTE(window,15,'TRAT_Disabled',0)
  513.   StopSearch = 0
  514.   SearchLoop:
  515.   Do Loop = 1 to MP3Title.0
  516.     Call CheckOnline
  517.     Call TR_HANDLEMSG(app,'event')
  518.     If event.trm_class = 'TRMS_ACTION' & event.trm_id = 15 Then Do
  519.       StopSearch = 1
  520.       Leave
  521.     End
  522.     If event.trm_class = 'TRMS_CLOSEWINDOW' Then Do
  523.       Done = 1
  524.       Leave
  525.     End
  526.     Call TR_SETATTRIBUTE(window,5,'TRAT_Value',Loop-1)
  527.     Address 'AMSTER.1' 'SEARCH "'MP3Title.Loop'" SONG'
  528.     If SaveResultsBool = 1 Then Do
  529.       SongTitle = MP3Title.Loop
  530.       Call SaveResults
  531.     End
  532.   End
  533.   If AutoHopBool = 1 & StopSearch = 0 Then Do
  534.     Call ChangeServers
  535.     Signal SearchLoop
  536.   End
  537.   Call TR_SETATTRIBUTE(window,10,'TRAT_Disabled',0)
  538.   Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',0)
  539.   Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',0)
  540.   Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',0)
  541.   Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',0)
  542.   Call TR_SETATTRIBUTE(window,15,'TRAT_Disabled',1)
  543.   Return
  544.  
  545. break_c:
  546. failure:
  547. halt:
  548. ioerr:
  549. syntax:
  550.    Call rtezrequest('Notify the author about this!'||D2C(10)||'+++ Error' rc 'in line' sigl '-' ERRORTEXT(rc),'Oops!','Error!')
  551. Done:
  552.    If app ~= '00000000'x THEN
  553.       Call TR_DELETEAPP(app)
  554.    Exit
  555.